Micron Document
🌎 rns.kin.earth git 🌍

Node / dev / reticulum / commits / ebec634

Commit ebec63487f1d05f48a941eae9054b5ef1ef74f34


Parents : 9373819
Author : Mark Qvist <mark@unsigned.io>
Date : 2024-11-20T16:53:14+01:00

Added prefer_ipv6 option to TCPServerInterface

Changes

2 files changed, 7 insertions(+), 6 deletions(-)


Diff

diff --git a/RNS/Interfaces/TCPInterface.py b/RNS/Interfaces/TCPInterface.py
index d4e49309..1e3a3427 100644
--- a/RNS/Interfaces/TCPInterface.py
+++ b/RNS/Interfaces/TCPInterface.py
@@ -415,15 +415,14 @@ class TCPServerInterface(Interface):
BITRATE_GUESS = 10*1000*1000
@staticmethod
- def get_address_for_if(name, bind_port):
+ def get_address_for_if(name, bind_port, prefer_ipv6=False):
import RNS.vendor.ifaddr.niwrapper as netinfo
ifaddr = netinfo.ifaddresses(name)
if len(ifaddr) < 1:
raise SystemError(f"No addresses available on specified kernel interface \"{name}\" for TCPServerInterface to bind to")
- # TODO: Add IPv6 prefer option
- if False and netinfo.AF_INET6 in ifaddr:
+ if prefer_ipv6 and netinfo.AF_INET6 in ifaddr:
bind_ip = ifaddr[netinfo.AF_INET6][0]["addr"]
return TCPServerInterface.get_address_for_host(f"{bind_ip}%{name}", bind_port)
@@ -448,7 +447,7 @@ class TCPServerInterface(Interface):
raise SystemError(f"No suitable kernel interface available for address \"{name}\" for TCPServerInterface to bind to")
- def __init__(self, owner, name, device=None, bindip=None, bindport=None, i2p_tunneled=False):
+ def __init__(self, owner, name, device=None, bindip=None, bindport=None, i2p_tunneled=False, prefer_ipv6=False):
super().__init__()
self.HW_MTU = 1064
@@ -471,7 +470,7 @@ class TCPServerInterface(Interface):
bind_address = None
if device != None:
- bind_address = TCPServerInterface.get_address_for_if(device, self.bind_port)
+ bind_address = TCPServerInterface.get_address_for_if(device, self.bind_port, prefer_ipv6)
else:
if bindip == None:
raise SystemError(f"No TCP bind IP configured for interface \"{name}\"")

diff --git a/RNS/Reticulum.py b/RNS/Reticulum.py
index 1176db10..55483de0 100755
--- a/RNS/Reticulum.py
+++ b/RNS/Reticulum.py
@@ -640,6 +640,7 @@ class Reticulum:
listen_ip = c["listen_ip"] if "listen_ip" in c else None
listen_port = int(c["listen_port"]) if "listen_port" in c else None
i2p_tunneled = c.as_bool("i2p_tunneled") if "i2p_tunneled" in c else False
+ prefer_ipv6 = c.as_bool("prefer_ipv6") if "prefer_ipv6" in c else False
if port != None:
listen_port = port
@@ -650,7 +651,8 @@ class Reticulum:
device,
listen_ip,
listen_port,
- i2p_tunneled
+ i2p_tunneled,
+ prefer_ipv6,
)
if "outgoing" in c and c.as_bool("outgoing") == False:

Served by rngit 1.5.2 - Generated in 0.05s